何謂函式?函式我會把它形容成一個小盒子,而這個盒子裡面放著各式各樣不同的東西,有的時候你需要加法運算,可以呼叫加法小幫手,需要乘法運算就可以呼叫乘法小幫手。每個盒子裡面都裝著不同的特性,這樣在撰寫程式的時候就不用重複寫同樣的程式碼。
那函式的命名規則是什麼呢?
首先開頭必須以func為名,後面自定義一個函式的名稱,通常名稱的部份建議命名有意義的,這是什麼意思呢?就是可以讓你在呼叫函式之前,可以透過函式名稱就明白這個函式是做什麼用的。不過話雖如此,由於敝人的英文程度大概跟小學生差不多,所以我常常也沒辦法貫徹這件事情,但至少我們知道有這樣的規則,以及朝著這個目標前進,一步步讓自己的code越來越漂亮。其實Swift本身支援中文的命名,所以用自己的母語去命名函式名稱肯定很直覺,如下圖。
不過我幾乎沒看過有人code裡面有用中文去命名的,所以大家應該還是比較喜歡用英文命名吧?因此像我這種英文不好的人,如果未來想要以coding當做職業,勢必還是得把英文學好的:) 所以上面的例子只是告訴你,其實中文命名是支援的,不過實際上幾乎沒有人這樣做。回到程式碼的部份,因為這個函式是回傳乘法的部份,而乘法就是數字相乘,所以需要一個回傳值,這個回傳值當然就必須是Int,因此在上面的程式碼會看到 -> Int這個地方就是把return a * b的結果回傳。而看到()小括弧裡面的a:Int, b:Int就是這個函式的參數與參數型別,在看到下面乘法(a: 10, b: 5)就是呼叫乘法這個函式,並且填上a,b的值,才算是完整的呼叫。因為這個乘法函式有外部名稱,所以當被呼叫的時候一定要傳入參入,否則會出現error。
另外也可以在設定函式的時候就給予預設的參數值,這樣的話在呼叫函式時也可以選擇不輸入參數值,此時的函式就會回傳預設的值,如下圖。
一般傳入的變數不會改變其本身的值,如下圖。
不過如果有改變的需求,此時就可以用輸入輸出參數,只要在型別前面加上inout即可。因為函式裡的參數本身是let,也就是不可以改變其值,所以如果寫a = a * 2,會出現錯誤,此時就需要透過inout讓這個值變成可輸出輸入,就可以把結果回傳到原本傳入的number。